import { Global, Module } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';

@Global() // 声明为全局模块
@Module({
  exports: ['PRISMA'], // 导出动态 Service
  providers: [
    {
      /**
       * 动态 Service
       * 概念：暴露 prisma client 实例提供给 @Inject 使用
       */
      provide: 'PRISMA', // DI token
      async useFactory() {
        const client = new PrismaClient({
          datasourceUrl:
            'mysql://test01:Pass1234@rm-uf6xfy10i7i634xy58o.mysql.rds.aliyuncs.com:3306/nest_study', // 设置数据库链接
          log: [{ emit: 'stdout', level: 'query' }], // 开启数据库日志
        });
        await client.$connect();
        return client;
      },
    },
  ],
})
export class PrismaModule {}
